package com.example.hosptial.service;

import com.example.hosptial.model.enity.Department;
import com.example.hosptial.model.enity.Doctor;
import com.example.hosptial.model.view.DoctorView;
import java.util.List;

public interface DoctorManagementService {
    /**
     * 获取所有科室信息
     * @return 科室列表
     */
    List<Department> getAllDepartments();

    /**
     * 获取所有医生视图信息
     * @return 医生视图列表
     */
    List<DoctorView> getAllDoctors();

    /**
     * 根据科室ID获取医生视图信息
     * @param deptId 科室ID
     * @return 医生视图列表
     */
    List<DoctorView> getDoctorsByDepartment(Integer deptId);

    /**
     * 根据医生姓名搜索医生视图信息
     * @param doctorName 医生姓名
     * @return 医生视图列表
     */
    List<DoctorView> searchDoctorsByName(String doctorName);

    /**
     * 添加新医生
     * @param doctor 医生实体
     * @return 添加后的医生实体
     * @throws IllegalArgumentException 如果医生信息验证失败
     */
    Doctor addDoctor(Doctor doctor);

    /**
     * 更新医生信息
     * @param doctorId 医生ID
     * @param currentPassword 当前密码
     * @param newPhone 新电话号码
     * @param newPassword 新密码（可选）
     * @return 更新后的医生视图信息
     * @throws IllegalArgumentException 如果当前密码错误
     */
    DoctorView updateDoctorInfo(String doctorId, String currentPassword,
                               String newPhone, String newPassword);
}